## 4.17. Programs That Serve You

We're including this section because you should start to be interested in what's running on your system behind your back.

Many modern computer activities are too complex for the system simply to look at a file or some other static resource. Sometimes these activities need to interact with another running process.

For instance, take FTP, which you may have used to download some Linux-related documents or software. When you FTP to another system, another program has to be running on that system to accept your connection and interpret your commands. So there's a program running on that system called `ftpd`. The d in the name stands for daemon, which is a quaint Unix term for a server that runs in the background all the time. Most daemons handle network activities.

You've probably heard of the buzzword client/server enough to make you sick, but here it is in action--it has been in action for years on Unix.

Daemons start up when the system is booted. To see how they get started, look in the /etc/inittab and /etc/inetd.conf files, as well as distribution-specific configuration files. We won't go into their formats here. But each line in these files lists a program that runs when the system starts. You can find the distribution-specific files either by checking the documentation that came with your system or by looking for pathnames that occur more often than others in /etc/inittab. Those normally indicate the directory tree where your distribution stores its system startup-files.

To give an example of how your system uses /etc/inittab, look at one or more lines with the string `getty` or `agetty`. This is the program that listens at a terminal (tty) waiting for a user to log in. It's the program that displays the `login :` prompt we talked about at the beginning of this chapter.

The /etc/inetd.conf file represents a more complicated way of running programs--another level of indirection. The idea behind /etc/inetd.conf is that it would waste a lot of system resources if a dozen or more daemons were spinning idly, waiting for a request to come over the network. So, instead, the system starts up a single daemon named `inetd`. This daemon listens for connections from clients on other machines, and when an incoming connection is made, starts up the appropriate daemon to handle it. For example, when an incoming FTP connection is made, `inetd` starts up the FTP daemon (`ftpd`) to manage the connection. In this way, the only network daemons running are those actually in use.

In the next section, we'll show you how to see which daemons are running on your system. There's a daemon for every service offered by the system to other systems on a network: `fingerd` to handle remote `finger` requests, `rwhod` to handle `rwho` requests, and so on. A few daemons also handle nonnetworking services, such as `kerneld`, which handles the automatic loading of modules into the kernel.

Copyright © 2001 O'Reilly & Associates. All rights reserved.